package com.jie.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.jie.dto.UserBackDTO;
import com.jie.dto.UserDetailDTO;
import com.jie.dto.UserLoginTokenDTO;
import com.jie.entity.UserInfo;
import com.jie.response.RespBean;
import com.jie.vo.*;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author zwq
 * @since 2022-01-04
 */
public interface UserInfoService extends IService<UserInfo> {
    /**
     * 登录之后返回token
     * @param username
     * @param password
     * @param request
     * @return
     */
    RespBean login(String username, String password, String code, HttpServletRequest request);

    /**
     * 修改用户权限信息
     * @param userRoleVO
     */
    void updateUserRole(UserRoleVO userRoleVO);
    /**
     * 根据用户名获取用户
     * @return
     */
    UserDetailDTO getAdminByUserName();
    /**
     * 用户修改自己密码
     * @param password
     */
    void updateUserPassword(String password);

    /**
     * 注册功能
     * @param userRegisterVO
     * @return
     */
    RespBean<?> register(UserRegisterVO userRegisterVO);

    PageResult<UserBackDTO> listUserBackDTO(ConditionVO condition);

    /**
     * 发送邮箱验证码
     * @param qqEmailSendCodeVO
     * @return
     */
    boolean emailSendCode(QQEmailVO qqEmailSendCodeVO);

    /**
     *  邮箱验证码注册
     * @param qqEmailRegisterLoginVO
     * @return
     */
    boolean qqEmailRegister(QQEmailRegisterLoginVO qqEmailRegisterLoginVO);

    UserLoginTokenDTO loginApp(String username, String password, HttpServletRequest request);

    /**
     * 刷新Token
     * @param token
     * @return
     */
    HashMap<String, String> refreshToken(String token);

    /**
     * 退出登录
     */
    void logout();
}
